This relates to integrated circuits and, more particularly, to programmable integrated circuits.
Programmable integrated circuits are a type of integrated circuit that can be programmed by a user to implement a desired custom logic function. In a typical scenario, a logic designer uses computer-aided design tools to design a custom logic circuit. When the design process is complete, the computer-aided design tools generate configuration data. The configuration data is loaded into memory elements to configure the devices to perform the functions of the custom logic circuit.
Configuration data may be supplied to a programmable device in the form of a configuration bit stream. After a first configuration bit stream has been loaded onto a programmable device, the programmable device may be reconfigured by loading a different configuration bit stream in a process known as reconfiguration. An entire set of configuration data is often loaded during reconfiguration.
Furthermore, in certain applications, tasks implemented on an integrated circuit can be accelerated by using different processing mechanisms such as a many-core processing system, which is a multi-CPU parallel processing system having multiple processing cores. Applications can then be processed by more than one core processor in parallel so as to improve processing speed. Typically, a system uses fixed core processors with a pre-determined number computational cores to enable parallel processing. However, fixed core processors are dedicated to serve fixed application needs and are not configurable. In other words, these systems provide fixed many-core platforms that are non-scalable.
Situations frequently arise where it would be desirable to design and implement dynamically configurable many-core systems to increase efficiency, flexibility, and scalability associated with performing parallel processing tasks for certain applications.
It is within this context that the embodiments herein arise.